查看原文
其他

虚幻引擎5为什么可以强到惊艳?这篇技术解析让你眼前一亮!

The following article is from 老顾谈几何 Author 顾险峰

专题探讨

本文授权转载自微信公众号:老顾谈几何



前几天


小伙伴们一定被虚幻引擎5的新闻刷屏了!


技术的惊艳,震惊业界


虚幻引擎5令人惊艳的实时渲染效果




Lumen in the Land of Nanite

在PlayStation 5上运行的实时演示




几何图像的思想



2020年5月13日,Epic Game揭开了虚幻引擎5的神秘面纱,该公司发布的演示视频惊艳了全球游戏业。

虚幻引擎5的强大性能彻底地征服了计算机图形学领域的学术同行和广大玩家。

这次技术飞跃使得游戏中的实时细节渲染更加逼近电影CG效果和真实的物理世界。

虚幻引擎5具备两大全新核心技术:Nanite虚拟微多边形几何技术和Lumen动态全局光照技术。

Nanite虚拟几何技术的出现意味着由数以亿计的多边形组成的影视级艺术作品可以被直接导入虚幻引擎,Nanite几何体可以被实时流送和缩放,因此无需再考虑多边形数量预算、多边形内存预算或绘制次数预算了;也不用再将细节烘焙到法线贴图或手动编辑细节层次(LOD),这必定是图形学领域革命性的飞跃。如图1所示,演示中每个武士雕像都有3300万个多边形,其几何细节精雕细琢得无以复加,其逼真程度令人叹为观止!


图1. 每个雕像具有3300万个多边形



传统方法


传统的计算机图形学技术中,三维几何形状用所谓的三角网格来表示。我们在曲面上稠密采样,然后将采样点三角剖分,记录下三角网格的组合结构信息,同时记录下所有顶点的三维位置信息,我们由此来表达曲面形状。

相比于图像,三角网格的组合结构通常是不规则的,我们无法通过每个顶点的序号来预测顶点所在的区域。这种不规则性,使得三角网格无法直接用硬件表达和随机存取;在几何处理软件中,三角网格的数据结构需要大量的指针,需要复杂精巧的算法来处理。



图2. 曲面形状由三角网格数据结构来表达。


曲面几何的细节由三角面片来表达,给定同样的原始曲面,粗糙的几何需要较低的采样率和较少的三角面片(低模),精密的几何表示需要更高的采样率和更多的三角面片(高模)。

低模提高了渲染速度,但是降低了画面质量;高解析度的三角网格降低渲染画面的帧率,但是提高了画面渲染质量。

在游戏中,为了达到实时交互的速度,根据人物距离镜头的远见,视角方向,我们可以动态选择不同精密程度的三角网格。低模和高模可以用统一的数据格式来表示,动态改变解析度,这一几何表示被称为是LOD(Level Of Detail)表示,由Hughes Hoppe所发明,目前普遍用于游戏引擎之中。图3显示了同一张老人脸的不同层次的几何表示。



图3. 曲面的细节层次(LOD)表示



曲面的形状不足以表达几何体的所有信息,我们需要曲面的颜色信息,材料信息(例如金属质感)、粗糙程度、光学特性等信息。这些信息往往存储在所谓的纹理图像之中,每个像素对应曲面上一个点,像素值代表了对应点处的颜色、材料、光学性质等信息。

这些图像被称作纹理图像,纹理图像和曲面之间的映射被称为是曲面的参数化。将纹理图像贴敷到曲面上的过程被称为是纹理贴图。图3显示了纹理贴图的实例。第一行是只有几何、没有纹理的“白模”;中间行是两张不同的纹理图像;下面一行是不同纹理贴图的渲染效果。


图3. 曲面纹理贴图


纹理图像也可用于表达其他信息,例如法向量贴图。如图4所示,我们将怪兽模型参数化到平面圆盘,然后将曲面上每一点的法向量存在相应的纹理像素中,我们用红绿蓝颜色来表示法向量的坐标,如此得到了法向量纹理图。我们用高模来生成法向量纹理图,然后将其贴在低模上。

渲染的质量取决于法向量的精密程度,而渲染速度依赖于三角面片的个数。一方面,我们希望提高法向量的精密程度,另一方面我们希望减少三角面片的个数,如此低模配上高模生成的法向量纹理图是一个巧妙的解决方案。


图4. 由最优传输映射得到的法向量贴图


将高模生成的法向量纹理严丝合缝地贴到低模上,需要建立高模和低模之间的映射,如图5所示,我们在三维空间中将高模和低模尽量对齐,然后将低模向高模投影,每个低模顶点找到高模曲面上的最近点,从而建立映射。这一过程被称为是所谓的“烘焙”。


图4. 烘焙过程


我们看到传统方法中的几何压缩、建立LOD表示,法向贴图,烘焙,核心都是为了提高渲染质量,提高渲染速度。这些传统技术依赖于微分几何原理,需要复杂的算法来实现。

而Nanite的虚拟微多边形几何技术使得这些技术都过时了,可谓石破天惊,一骑绝尘!


Nanite 几何图像方法


那么,Nanite的虚拟微多边形几何技术究竟高明在哪里?

为什么一夜之间就可以摒弃人们数十年来积累的技术?

很多计算机图形学领域的专家分析,Nanite的几何技术很有可能是基于老顾18年前与Gortler 教授、Hughes Hoppe合作的SIGGRAPH论文,“几何图像”【1】。

如上讨论,我们看到在图形学中有两种主要的数据结构:表示几何的不规则三角网格和表示纹理的规则图像。

为了处理这两种迥然不同的数据,图形处理单元(GPU)硬件中设置了两条流水线,一条用于处理三角网格,另外一条用于出来纹理图像。

我当时的想法是将两种数据结构统一成纹理图像,从而抛弃三角网格的流水线,由纹理图像的流水线处理几何与纹理数据,从而简化GPU的硬件设计,提高渲染速度。


图5. 曲面共形参数化

图6. 大卫王头像的几何图像(左帧)

与法向纹理图(右帧)



图5和图6显示了将三角网格转换成几何图像的计算过程。

首先,我们将三角网格参数化,映射到平面长方形区域,尽量减小畸变;然后,我们在平面上重新采样,将几何位置和法向量信息记录在图像的相应像素处,用红绿蓝来编码。

由图6,我们可以看到,几何图像比法向纹理光滑很多。




图7. 几何图像到三维曲面的转换(MIPMAP)



几何图像包含了三维曲面的全部几何信息,自然可以被渲染成曲面。当然,实际应用中,我们也可以将高模曲面相对于低模曲面的位移也表示成几何图像,达到浮雕效果。

总而言之,我们用图像的数据结构来统一几何和纹理,每个曲面模型都表示成几张巨大的纹理图像。例如Nanite技术中的曲面包含几何图像、颜色纹理、金属材质纹理、光学特性等几张纹理。这种规则的表示方法具有很多优点,例如渲染过程中可以动态决定解析率(mipmap pyramid),可以动态细分加密(subdivision),动态生成纹理,例如存储全局光照的中间计算结果等等。

特别是,几何图像的格式,使得内存访问模式更加有规律,更加容易预测,从而提高内存访问效率,极大地提高了数据调度的速度。


那么


为什么18年前GPU


没有采用几何图像的技术路线呢?



我觉得一个重要原因在于那时候曲面参数化技术还没有出现,从三角网格到几何图像的转换非常困难。现在,由于计算共形几何的理论和算法成熟,计算最优传输映射也接近成熟,曲面参数化的问题不再是瓶颈。


展望

从2002年至今,几何图像这篇文章在图形学领域广泛传播,专家学者同行们进行了大量的后继研究,引用数目上千。无数的学者和工程师们耗费多年的心血,全面改进了技术,推动了这一领域的发展,日积月累,终于一鸣惊人。如果几何图像被工业界广泛接受,那么全局参数化、基于几何图像的渲染、基于几何图像的硬件设计会吸引人们更多的注意。相应的,微分几何理论基础将会成为图形学领域的必修课程之一。在未来,我们期待基础数学更加深刻的应用,图形学领域更多革命性的成果涌现!


【1】 X. Gu, S. Gortler and H. Hoppe, Geometry Images,SIGGRAPH 2002

http://hhoppe.com/proj/gim/




虚拟纹理与几何图像


和Epic Game公司的虚幻引擎5惊艳了全球游戏业,其Nanite虚拟微多边形几何技术和Lumen动态全局光照技术带来了产业界的飞跃。


Nanite虚拟几何技术的出现意味着由数以亿计的多边形组成的影视级艺术作品可以被直接导入虚幻引擎,Nanite几何体可以被实时流送和缩放,因此无需再考虑多边形数量预算、多边形内存预算或绘制次数预算了。这极大地解放了数字艺术家,在未来他们只需要专注于艺术灵感,而不必被技术所掣肘。


图1. 虚幻引擎5的演示:Lumen in the Land of Nanite.


Epic Game 宣称Nanite技术可以支持具有160亿个多边形的场景渲染。显然,GPU的内存无论如何也无法容纳如此之多的几何数据,因此Nanite必然采用了与虚拟内相类似的技术。

很多图形学的同行猜测Nanite虚拟多边形几何技术很可能是虚拟纹理(Virtual Texture)和几何图像(Geometry Image)的结合。

之前介绍里有分析到几何图像的思想,很多同学询问相关的计算机图形学概念和算法,这里我们进一步给出直观详细的解释,更多细节可以在大学本科和研究生图形学课程中找到。



基本图形学概念



图2. 几何与纹理


曲面一般表示成三角网格和纹理图像,三角网格表示曲面的几何拓扑信息,纹理图像给出曲面的颜色材质等信息。我们将三角网格映射到平面区域的过程被称为曲面参数化,将纹理图像贴合到曲面上被称为纹理贴图。图2显示了一张人脸曲面的三角网格、纹理图像;图3是图2数据的渲染结果。


图3. 几何加纹理渲染效果



为了提高实时渲染速度,减小内存存储要求,我们为同一个几何模型准备了不同解析率的三角网格,根据细节层次(Level of Details)要求来决定所用的解析率。

如图4所示,如果几何体距离镜头很远,我们用低解析率的模型;反之,如果曲面距离镜头很近,我们用高解析率的模型。不同LOD的三角网格可以采用同样的纹理图像,所以这些网格具有同样的参数化。


图4. 几何曲面的LOD表示,从低模到高模


图5显示在渲染过程中,对于镜头可以看到的部分,曲面的解析率可以动态提高,而对于镜头看不到的部分,曲面的解析率可以动态降低。例如我们贴近佛像的头部,佛像的身体部分可以用很粗糙的三角剖分;我们从右侧观察天使的雕像,则右侧的三角剖分比左侧精细很多。


图5. 三角网格的LOD表示

局部的解析率根据视点动态变化



类似的,纹理图像也有不同的解析率,我们将一张高清的纹理图像下采样,得到一系列的纹理图像,被称为纹理图像的mipmap金字塔。如果渲染画面的屏幕具有高解析率,曲面距离镜头很近,我们需要采用高解析率的纹理图像,否则采用金字塔高层的纹理图像。



图5. 纹理图像的mipmap pyramid


如图6所示,反之给定低模的三角网格,我们可以依据一定的规则,将网格加细(subdivision),得到更为精细的三角网格。多次细分之后,三角网格几乎处处收敛到光滑的样条曲面。三角网格细分的规则可以写入tessellation shader,由硬件自动完成。


图6. 三角网格的细分(subdivision)


纹理图像可以存储更多的信息,例如每个像素可以记录颜色、法向量、材质、金属、背景光、散射、高光、透明度、几何高度、几何位移等很多信息,用于描绘物体表面的细节。低模加上高模生成的法向量贴图可以提高渲染质量和速度。


图7. 法向量纹理


在游戏中,法向量贴图经常用来增加人脸曲面的几何细节,特别是皱纹。如图8和图9所示,建模师的雕塑完成后,人物皮肤表面比较光滑,应用了法向量贴图之后,皱纹效果显现出来,同时皮肤更具质感。


图8. 左帧,没有用法向贴图

右侧,应用了法向贴图


图9. 法向纹理用于描述人脸皱纹 

( by Alander Alexei)



虚拟纹理技术


对于高质量、复杂场景的游戏,纹理图像的数据非常庞大,无法存储在GPU的内存之中,这时必须借助虚拟纹理技术(Virtual Texture)。例如游戏的场景设定在一个山峦地区,我们有航拍的地形几何数据,如图10所示,同时有不同解析度的纹理数据,例如近景拍摄的照片。我们在脑海中为地形曲面建立虚拟的坐标,并将所有的照片融合成一张巨大的纹理图像,覆盖整个游戏世界,这张笼罩乾坤的纹理图像,就被称之为虚拟纹理。


图10. 地形的几何数据



虚拟纹理的UV坐标,被称为虚拟坐标,或者虚拟地址空间。玩家在山峦中穿行的每一刹那,都对应着虚拟地址空间中的某一个点。

游戏系统实时跟踪玩家的行迹,从而得知其任意时刻的虚拟坐标。

由于虚拟纹理过于巨大,我们将其切割成很多小块,每一小块被称为一个页面(page),如图11所示。任意时刻,系统只保留与玩家位置临近的少数页面在GPU显存之中,其他的页面依然放在硬盘之中。当玩家在山峦中游走,系统实时判断缺失的页面,依照一定规则(例如 Least Recently Used)淘汰过期无用的页面。这种动态更新GPU内存中页面的算法与传统的虚拟内存算法非常类似。


图11. 地形纹理的虚拟地址空间

每一个方格代表一个页面



在现代游戏引擎中,每一帧屏幕画面被渲染两次,第一次渲染,系统计算每一个像素的虚拟坐标,由虚拟坐标决定对应的页面编号,同时根据遮挡、远近决定纹理mipmap的层次。

然后,系统由虚拟坐标(页面,层次)查找对应的物理坐标,如果有页面缺失,系统去硬盘查找并调入GPU内存。我们以ID公司的游戏Rage来举例说明。图12是玩家看到的渲染画面,图13是系统第一次绘制出的画面,这里每一个方格对应一个页面,如此得到每一个像素对应的虚拟纹理坐标。图14是当前GPU内存中存储的活跃页面。


图12. 玩家眼中的游戏画面,ID公司,Rage


图13. 虚拟纹理坐标对应的页面

每个方格对应一个页面,ID公司,Rage


图14. GPU内存中存储的当前活跃的页面

物理内存32乘32页面,ID公司,Rage


图15简略地给出了虚拟纹理的示意图。从虚拟地址到物理地址的映射被保存在GPU中的一张查询表格中(Page Table),这张表格一般是四叉树结构,也用纹理图像来表达。维护这张表格,动态更新物理纹理,是虚拟纹理系统的核心任务。


图15. 虚拟纹理系统原理示意图 

(Mayer, Scheiblauer and Mayer)


一旦渲染当前画面所需的页面都在GPU内存之中,系统进行第二次绘制。像素渲染器(pixel shader)可以通过查询Page Table从虚拟纹理坐标找到物理坐标,从而得到相应的纹理像素,再经过滤波,融合,得到当前像素的颜色值。当然,真实的虚拟纹理系统的算法非常复杂,软硬件分工也非常考究,这一系统对于整个游戏的质量具有决定性的影响。



图16. Graphine虚拟纹理的演示 

(by Al Josha Demeulemeester)


图16展示了Granite SDK 5.0 的虚拟纹理技术。一架双体飞机在山峦大海上空飞行,系统计算了虚拟纹理坐标,得到对应的页面编号和细节层次,调度GPU内存,从而实时渲染,得到逼真的绘制效果。



几何图像方法


虚拟内存技术使得艺术家不再担心纹理的存储量,纹理图像可以被实时流送(页面调度)放缩(mipmap),游戏设计师不必考虑纹理的内存预算、绘制次数。这里,如果我们将“纹理”换成“几何”,我们得到是Epic Game关于Nanite虚拟几何技术的广告词。

迄今为止,几何的三角网格表示与纹理图像表示依然泾渭分明,纹理图像还是贴附在三角网格之上的。虽然虚拟纹理技术为艺术家极大地解放了纹理设计,但是对于几何依然于事无补,对于影视级别的高解析度几何曲面,系统依然无法承担。

那么,我们为什么不能将几何数据也虚拟化呢?例如,我们将庞大的地形数据放在硬盘上,只在GPU Cache中保存当前活跃的页面,通过实时调度,来保证玩家的体验?理论上,这种思路没有任何障碍。

首先,我们将地形几何曲面整体参数化,如图11所示,覆盖整个虚拟地址空间,覆盖整个虚拟纹理图像;然后,我们将整个虚拟地址空间切割成页面,随机调度进入GPU内存。

但是,在这里我们遇上了一个瓶颈:三角网格的不规则性。如图17所示,人脸曲面的组合结构非常不规则,我们需要存储顶点的位置信息,同时也要存储顶点之间的连接关系,如何在GPU内存页面中表达如此复杂的组合结构,并且从组合结构随机存取顶点信息,这是一个非常棘手的问题。


图17. 三角网格的不规则性



一个简单的解决方案是将三角网格规则化,即将曲面在参数域上用规则的格点重新采样,用二维矩阵来表示曲面,这就是几何图像想法【1】的初衷。


图18. 几何图像示意图


如图18所示,我们将大卫王雕像(top left)共形参数化到平面长方形(top right),规则采样,将三角网格转换成几何图像(middle left)和法向量纹理(middle right),几何图像中的每一个像素的红绿蓝颜色值代表相应顶点的三维位置,规则的格点(像素的行列序号)给出了顶点之间的连接关系。

几何图像代表的曲面显示在下面一行,左帧是下采样得到的低模曲面,右帧是原始几何图像代表的高模曲面。如此,几何图像的LOD和纹理图像的mipmap  相统一。

在虚拟地址空间,几何图像与各种纹理图像相重合,被分割成同样的页面,在内存调度过程中同进同退,同时流送,在绘制过程中同步放缩(mipmap)。

这样的机制减少了带宽消耗和GPU内存消耗,提高了几何与纹理的局域性,更加利于visibility culling。

同时,中间计算结果可以存储成一张虚拟纹理,提高GPU的任务处理的同步性,简化了绘制流程。当然,应用tessellate shader和procedure decal,我们可以动态添加更多的几何与纹理。

几何与纹理的同步虚拟化,使得游戏设计师和艺术家不再顾虑几何与纹理的存储量、内存预算与绘制次数,极大地解放了他们的艺术天性。由此,我们相信Nanite虚拟微多边形几何技术应该类似于虚拟纹理技术与几何图像技术的融合。



小结


将几何数据虚拟化,让艺术家在虚拟地址空间中纵横驰骋,的确是划时代的进步。这项技术需要将复杂场景的几何全局参数化到统一的虚拟地址空间之中,同时使得这一映射带来的畸变尽量的小。


这需要微分几何的理论来保证。如图19所示,我们将欢喜佛映射到平面圆盘,左帧的参数化保持曲面局部形状不变,右帧的映射保持曲面的面积元不变。保形变换的算法对于任意拓扑曲面都适用,保面积变换的算法对于任意维数的流形都适用。


计算共形几何【2】为保形变换算法奠定了理论基础,最优传输理论为保面积变换奠定了基础。因此,虚拟几何图像的理论已经完备,算法相对成熟。工业界正在开始大规模推广应用。



图19. 保形和保面积参数化


我们期望虚拟几何与纹理技术会推进三维工业的进一步发展,例如游戏动漫、VR、AR以及医学影像。

我们希望更多的年轻人不再沉湎于游戏之中,而是对其背后的数学原理与工程技术产生强烈的好奇,刻苦钻研微分几何与图形学算法,充分施展才华,为社会做出更为深刻而实质性的贡献!


图20. 虚幻引擎5的演示

Lumen in the Land of Nanite



【1】 X. Gu, S. Gortler and H. Hoppe, Geometry Images, SIGGRAPH 2002, 

http://hhoppe.com/proj/gim/

【2】顾险峰,丘成桐,《计算共形几何-理论篇》,高等教育出版社,2020




你一定还感兴趣:



《哪吒》《大圣归来》在技术上是否已达到美国迪士尼水平?一篇爆文引发全网热议


未来可期!!全新力作科幻动画上线,B站国创新秀《望古神话之天选者》的“发声”!


虚幻引擎5惊现!!!影视动漫游戏行业要变天了吗?


漫威宇宙会止于「尚气」吗?


哇!!!原来把2D画成3D效果还爆火网络的作者是他!!!


中国航天「长征火箭十二侠」刚诞生就陷入抄袭风波!原来幕后创作团队是他们!





想了解更多后续的介绍要锁定wuhu哦,微博的小伙伴可以关注我们的新浪微博:wuhu动画人空间,对了!如果你想看更多动画作品,去b站搜索wuhu动画人空间看看?


新加入的小伙伴们请注意!往期精彩内容在平台里的wuhu主页上,可别错过哦!欢迎小伙伴们的投稿!


如果你喜欢,请分享给更多人看到:)

欢迎留言和wuhu三侠互动!

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存